
#ifndef  HELPER_OBJECT_STANDARDRAWTYPE_H
#define  HELPER_OBJECT_STANDARDRAWTYPE_H

#include <string>
#include "helper/object/RawType.h"

namespace helper {
namespace object {

class StandardByte : public Byte {
public:
    explicit StandardByte(const char value);
    ~StandardByte() override;

    const char set(const char value) override;
    const char get() const override;

    std::string toString() const override;
    Object * copy() const override;

    bool equals(const Object & obj) const override;
private:
    char value_;
};

class StandardInteger : public Integer {
public:
    explicit StandardInteger(const long long value);
    ~StandardInteger() override;

    const long long set(const long long value) override;
    const long long get() const override;

    std::string toString() const override;
    Object * copy() const override;

    bool equals(const Object & obj) const override;
private:
    long long value_;
};
class StandardDouble : public Double {
public:
    explicit StandardDouble(const double value);
    ~StandardDouble() override;

    const double set(const double value) override;
    const double get() const override;

    std::string toString() const override;
    Object * copy() const override;

    bool equals(const Object & obj) const override;
private:
    double value_;
};


} // end of namespace object
} // end of namespace helper

#endif   /* HELPER_OBJECT_STANDARDRAWTYPE_H */
